﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.Mvc;

namespace web_uchet.Reports.OLAP
{
    public class OLAPSettings
    {
        private ИзмеренияSettings _ИзмеренияSettings = new ИзмеренияSettings();
        private КлиентыSettings _КлиентыSettings = new КлиентыSettings();
        private СотрудникиSettings _СотрудникиSettings = new СотрудникиSettings();
        private ВремяSettings _ВремяSettings = new ВремяSettings();
        private РабочиеМестаSettings _РабочиеМестаSettings = new РабочиеМестаSettings();       
        private OLAPFilters _Фильтр = new OLAPFilters();
        private ПоказателиSettings _ПоказателиSettings = new ПоказателиSettings();

        public ПоказателиSettings ПоказателиSettings { get { return this._ПоказателиSettings; } set { this._ПоказателиSettings = value; } }
        public bool Кол_во_Заказов { get { return this._ПоказателиSettings.Кол_во_Заказов; } set { this._ПоказателиSettings.Кол_во_Заказов = value; } }
        public bool Продажи { get { return this._ПоказателиSettings.Продажи; } set { this._ПоказателиSettings.Продажи = value; } }
        public Измерения Измерение1 { get { return this._ИзмеренияSettings.ИзмерениеCol; } set { this._ИзмеренияSettings.ИзмерениеCol = value; } }
        public Измерения Измерение2 { get { return this._ИзмеренияSettings.ИзмерениеRow; } set { this._ИзмеренияSettings.ИзмерениеRow = value; } }
        public OLAPFilters Фильтр { get { return this._Фильтр; } }
        public DateTime? FilterDateEnd { get { return this.Фильтр.DateEnd; } set { this.Фильтр.DateEnd = value; } }
        public DateTime? FilterDateStart { get { return this.Фильтр.DateStart; } set { this.Фильтр.DateStart = value; } }

        public КлиентыSettings КлиентыSettings { get { return this._КлиентыSettings; } }
        public СотрудникиSettings СотрудникиSettings { get { return this._СотрудникиSettings; } }
        public ВремяSettings ВремяSettings { get { return this._ВремяSettings; }}
        public РабочиеМестаSettings РабочиеМестаSettings { get { return this._РабочиеМестаSettings; }}

        public SelectList GetDimList(Измерения Selected)
        {
                SelectList List = new SelectList(new KeyValuePair<string,Измерения>[]{ 
                    new KeyValuePair<string,Измерения>("Клиенты",Измерения.Клиенты),
                    new KeyValuePair<string,Измерения>("Сотрудники",Измерения.Сотрудники),
                    new KeyValuePair<string,Измерения>("Время",Измерения.Время),
                    new KeyValuePair<string,Измерения>("Рабочие места",Измерения.Рабочие_места),
            }, "Value", "Key", Selected);
                return List;
        }
        public SelectList GetConditionList(Условие Selected)
        {
            SelectList List = new SelectList(new KeyValuePair<string, Условие>[]{ 
                    new KeyValuePair<string,Условие>(">",Условие.Больше),
                    new KeyValuePair<string,Условие>("<",Условие.Меньше),
                    new KeyValuePair<string,Условие>("=",Условие.Равно),
                    new KeyValuePair<string,Условие>("<=",Условие.МеньшеИлиРавно),
                    new KeyValuePair<string,Условие>(">=",Условие.БольшеИлиРавно),
            }, "Value", "Key", Selected);
            return List;
        }
    }
    
    public enum Показатели
    {
        Кол_во_Заказов,
        Продажи
    }
    public enum Измерения
    {
        Клиенты,
        Сотрудники,
        Время,
        Рабочие_места
    }
}
